#ifndef PUB_VAR_H
#define PUB_VAR_H

#define _DEBUG_

#include <QString>
#include <QSettings>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>

//#include "sm4.h"

#define u8 unsigned char
#define u32 unsigned long

class pub{
    //Q_OBJECT
private:
    static QSqlQuery qr;
    static QSqlQueryModel md;

private slots:
    void postRequestFinished(QNetworkReply *);

public :

    //static bool DEBUG;  //调试标志

    static QSqlDatabase db_o;   // oracle
    static QSqlDatabase db_m;   //mysql
    static bool userValidated;   //用户身份验证

    static bool useInsurance;   //医保动态库可用
    static QString ybywzq;      //医保业务周期号
    static QString ybywzqAtinc;      //申请交易流水号时的atinc，用于补全中心返回交易流水
    static QString localIP;     //本机IP
    static QString localMac;    //Mac
    static QString hos_name;    //医院名称
    static QString hos_code;    //医院编码
    static QString hos_ybbh;    //医院医保编号
    static QString hos_ybbh_old;    //医院医保编号(旧)
    static QString hos_ybbh_new;    //贯标医保编号
    static QString hos_ybjy;    //医保交易中台
    static QString hos_ybjy_ip;    //医保交易中台
    static QString hos_ybjy_port;    //医保交易中台
    static QString hos_ybjy_tail;    //医保交易中台
    static QString hos_dzpz;    //电子凭证中台
    static QString hos_dzpz_ip;    //电子凭证中台
    static QString hos_dzpz_port;    //电子凭证中台
    static QString hos_dzpz_tail;    //电子凭证中台
    static QString hos_insuplc; //  参保区划
    static QString hos_hiscode; //  开发商代码
    static QString hos_secretcode; //  安全管理码
    static QString usr_name;    //用户姓名
    static QString usr_code;    //用户代码
    static QString dp_name;    //科室名称
    static QString dp_code;    //科室代码
    static QString LOGINSESSION;    //登录session
    static QString local_carddriver;  //本机读卡器型号

    //new
    static QString sign_no; //登录ID
    static QString sign_time; //登录时间

    static bool cardFinish;
    static int cardResult; //
    static QString cardRet1; //
    static QString cardRet2; //

    static QString getStr(QString sour,QString sep,int ct); //
    static int searchStr(QString sour,QString sep,QString dest);
    static QString getValueFromList(QStringList,QString); //从字典取字串值

    typedef __stdcall int(*pIT)(char*, char* );
    static pIT BUSINESS;      //

    //int WINAPI Init(char*pInitInfo,char *pErrMsg);
    typedef __stdcall int(*pInit)(char*, char* );
    static pInit Init;      //初始化

    //int WINAPI ReadCardBas(char*pCardInfo,char*pBusiCardInfo);
    typedef __stdcall int(*pReadCardBas)(char* ,char*);
    static pReadCardBas ReadCardBas;    //读卡

    //int WINAPI ReadSFZ(char*pOutBuff, char* pOutBusiBuff);
    typedef __stdcall int(*pReadSFZ)(char* ,char*);
    static pReadSFZ ReadSFZ;    //读身份证

    //int WINAPI EcQuery(char* pInData, char* pOutData);
    typedef __stdcall int(*pEcQuery)(char* ,char*);
    static pEcQuery EcQuery;    //电子凭证

    //int WINAPI DailySinIn(char* pOutData);
    typedef __stdcall int(*pDailySinIn)(char* );
    static pDailySinIn DailySinIn;    //签到

    //int WINAPI ChangePIN(char *pOutBuff);
    typedef __stdcall int(*pChangePIN)(char* );
    static pChangePIN ChangePIN;//修改密码

    static QString getYbStr(QString, QString );   //获取医保交易固定格式串，参数为医保交易号
    static QString getYbStrJ(QString, QString);   //获取医保交易固定格式串，参数为医保交易号
    static QStringList getNl(QString s);    //用出生日期（yyyymmdd）获取年龄
    static QString getBirth(QString s);    //用年龄获取出生日期
    static QString popItem(QStringList);    //窗口弹出列表项目供选择
    static QString popSql(QString);    //根据传入的 sql 弹出列表项目供选择
    static QString add0(QString, int); //根据指定长度补全前导 0
    static QString bigW(float);   //数字转大写

    static QByteArray pkcs7_padding(QByteArray content);
    static QByteArray pkcs7_strip(QByteArray content);
    //static QByteArray enc(QByteArray source, QByteArray key);     //加密16字节长度字串
    static QString enc(QByteArray source, QByteArray key);     //加密16字节长度字串
    static QString dec(QByteArray source, QByteArray key);    //

    static QString encode(QByteArray inp, QByteArray key); //加密任意长度字串
    static QString decode(QByteArray inp, QByteArray key);

};


#define ENV_WIN

#endif // PUB_VAR_H
